package co.gov.medellin.ssti.sub.model.service;

import java.util.Collection;
import java.util.List;

import co.gov.medellin.ssti.sub.model.vo.AtributoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.RenovarVO;

public interface RenovarService {
	/**
	 * Metodo que consulta CODIGO, NOMBRE, TIPO_DATO, TIPO_ATRIBUTO de
	 * TCS_BEN_SUBP_ATR_BENEFICIARIO buscando por SBPR_CODIGO.
	 * 
	 * @param codeSubpro
	 *            Codigo del subprograma.
	 * @return Collection de AtributoVO.
	 * 
	 */
	Collection<AtributoVO> findAtributosSubpro(Long codeSubprograma);

	/**
	 * Metodo que consulta VALOR_NUM_ATR o VALOR_FEC_ATR o VALOR_CAR_ATR segun
	 * tipoDato en TCS_BEN_BENEFICIARIO_ATRIBUTO buscando por SAB_CODIGO y
	 * BEN_CODIGO.
	 * 
	 * @param tipoDato
	 *            "N": VALOR_NUM_ATR. "F": VALOR_FEC_ATR. Cualquier otro valor:
	 *            VALOR_CAR_ATR.
	 * @param codeBene
	 *            Codigo del beneficiario.
	 * @param codeAtri
	 *            Codigo del atributo.
	 * @return
	 * 
	 */
	String findBeneficiarioAtri(String tipoDato, Long codeBene, Long codeAtri);

	/**
	 * TODO: que no retorne RS! Metodo que consulta VALOR_NUM_ATR o
	 * VALOR_FEC_ATR o VALOR_CAR_ATR segun tipoDato en
	 * TCS_BEN_BENEFICIO_ATRIBUTO buscando por SAB_CODIGO y BOT_CODIGO.
	 * 
	 * @param tipoDato
	 *            "N": VALOR_NUM_ATR. "F": VALOR_FEC_ATR. Cualquier otro valor:
	 *            VALOR_CAR_ATR.
	 * @param codeBeneOtor
	 *            Codigo del beneficio otorgado.
	 * @param codeAtri
	 *            Codigo del atributo.
	 * @return
	 * 
	 */
	RenovarVO findBeneficioAtri(String tipoDato, Long codeBeneOtor,
			Long codeAtri);

	/**
	 * 
	 * @param codeSubpro
	 *            Codigo del subprograma.
	 * @param codeBene
	 *            Codigo del beneficiario.
	 * @return
	 * 
	 */
	List<String> findBeneficioOtorgado(Long codeSubpro, Long codeBene);

	/**
	 * 
	 * @param codeSubpro
	 *            Codigo del subprograma.
	 * @param codeEmpresa
	 *            Codigo de la empresa.
	 * @return
	 * 
	 */
	List<String> findBeneficioOtorgadoEmpresa(Long codeSubpro, Long codeEmpresa);

	/**
	 * 
	 * @param codeSubpro
	 *            Codigo del subprograma.
	 * @param codeBene
	 *            Codigo del beneficiario.
	 * @param codeSede
	 *            Codigo de la sede.
	 * 
	 */
	void findBeneOtorDeshabilitar(Long codeSubpro, Long codeBene, Long codeSede);

	/**
	 * 
	 * @param codeSubpro
	 *            Codigo del subprograma.
	 * @param codeSede
	 *            Codigo de la sede.
	 * @return
	 * 
	 */
	List<BeneficiarioVO> findBeneficiarios(Long codeSubpro, Long codeSede);
}
